local M = {}
M.version = "v1.0.1"

---@type UserConfig
M.config = require("guru.config")
--- 设置用户配置
--- @param user_config UserConfig 用户配置对象
function M.setup(user_config)
  require("guru.utils.global") -- 加载全局工具模块
  require("guru.basic") -- 加载基础模块
  -- 用户配置覆盖
  M.config = vim.tbl_deep_extend("force", M.config, user_config) -- 使用深度拷贝合并用户配置
  require("guru.env").init(M.config) -- 初始化环境
  require("guru.keybindings") -- 加载按键绑定模块
  local pluginManager = require("guru.lazy") -- 加载懒加载插件管理器
  if not pluginManager.avaliable() then -- 如果插件管理器不可用
    pluginManager.install() -- 安装插件管理器
  end
  pluginManager.setup() -- 设置插件管理器
  require("guru.colorscheme").reset() -- 重置颜色方案
  require("guru.autocmds") -- 加载自动命令模块
  require("guru.lsp") -- 加载 LSP 模块
  require("guru.cmp") -- 加载补全插件模块
  require("guru.format") -- 加载格式化模块
  require("guru.dap") -- 加载调试模块
  require("guru.utils.color-preview") -- 加载颜色预览工具模块
  if M.config.fix_windows_clipboard then -- 如果需要修复 Windows 剪贴板
    require("lua.gurus.utils.fix-yank") -- 加载修复复制粘贴问题模块
  end
end

return M

